#include "mq_connection.hpp"




int main()
{
    //1.实例化异步线程工作对象
    lrlmq::AsyncWorker::ptr awp = std::make_shared<lrlmq::AsyncWorker>();
    //2.实例化连接对象
    lrlmq::Connection::ptr conn = std::make_shared<lrlmq::Connection>("127.0.0.1",8085,awp);
    //3.通过连接创建信道
    lrlmq::Channel::ptr channel = conn->openChannel();
    //4.通过信道提供的服务完成所需
        //1.声明一个交换机exchange1，交换机类型为广播模式
        google::protobuf::Map<std::string,std::string> tmp_map;
        channel->declareExchange("exchange1",lrlmq::ExchangeType::FANOUT,true,false,tmp_map);
        //2.声明一个队列queue1
        channel->declareQueue("queue1", true, false, false, tmp_map);
        //3.声明一个队列queue2
        channel->declareQueue("queue2", true, false, false, tmp_map);
        //4.绑定Exchange1且binding_key设置为queue1
        channel->queueBind("exchange1","queue1","queue1");
        //5.实例化连接对象
        for(int i = 0;i < 10;i++)
        {
            lrlmq::BasicProperties bp;
            bp.set_id(lrlmq::UUIDHelper::uuid());
            bp.set_deliver_mode(lrlmq::DeliverMode::DURABLE);
            bp.set_routing_key("news.music.sport");
            channel->basicPublish("exchange1", &bp, "Hello World-" + std::to_string(i));
        }
        
        lrlmq::BasicProperties bp;
        bp.set_id(lrlmq::UUIDHelper::uuid());
        bp.set_deliver_mode(lrlmq::DeliverMode::DURABLE);
        bp.set_routing_key("news.music.sport");
        channel->basicPublish("exchange1", &bp, "Hello Bite");

    //6.关闭信道
    channel->closeChannel();
    return 0;

}